package com.ruoyi.flowable.listener;

import com.ruoyi.flowable.config.SpringContextHolder;
import com.ruoyi.union.domain.SysActivity;
import com.ruoyi.union.service.ISysActivityService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.stereotype.Component;

/**
 * 活动发布审批流程任务监听器
 * 审批通过时，更新活动状态为"已发布"（activity_status = 1）
 */
@Component
public class ActivityPublishTaskListener implements TaskListener {

    @Override
    public void notify(DelegateTask delegateTask) {
        // 审批通过时更新活动状态
        // 从流程变量中获取活动对象（提交流程时以 commonClass 传入）
        Object obj = delegateTask.getVariable("commonClass");
        if (!(obj instanceof SysActivity)) {
            return;
        }
        SysActivity activity = (SysActivity) obj;
        if (activity.getActivityId() == null) {
            return;
        }
        // 通过 Spring 上下文获取 service bean
        ISysActivityService activityService = SpringContextHolder.getBean("sysActivityServiceImpl", ISysActivityService.class);
        // 更新活动状态为"已发布"（1）
        activity.setActivityStatus("1");
        activity.setApprovalStatus("1"); // 同时更新审核状态为"审核通过"
        // 保存更新
        activityService.updateById(activity);
    }
}
